﻿using System;
using System.IO;
using Styx;
using Styx.Helpers;

namespace TuanHA_Hunter
{
    public class THSettings : Settings
    {
        public static readonly THSettings Instance = new THSettings();

        #region DataSource

        public bool UpdateStatus;

        public THSettings()
            : base(
                Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
                             string.Format(
                                 @"Routines/TuanHAHunter/TuanHA-Hunter-Settings-20130304-{0}.xml",
                                 StyxWoW.Me.Name)))
        {
        }

        #endregion

        [Setting, DefaultValue(true)]
        public bool AimedShot { get; set; }

        [Setting, DefaultValue(true)]
        public bool AMurderofCrows { get; set; }

        [Setting, DefaultValue(true)]
        public bool AMoCLRCD { get; set; }

        [Setting, DefaultValue(false)]
        public bool AMoCLRCBurst { get; set; }

        [Setting, DefaultValue(true)]
        public bool ArcaneShot { get; set; }

        [Setting, DefaultValue(true)]
        public bool AttackASAP { get; set; }

        [Setting, DefaultValue(true)]
        public bool AttackASAPInStealth { get; set; }

        [Setting, DefaultValue(true)]
        public bool AutoAspect { get; set; }

        [Setting, DefaultValue(true)]
        public bool AutoAoE { get; set; }

        [Setting, DefaultValue(true)]
        public bool AutoAttack { get; set; }

        [Setting, DefaultValue(true)]
        public bool AutoCallPet { get; set; }

        [Setting, DefaultValue(true)]
        public bool AutoFace { get; set; }

        [Setting, DefaultValue(true)]
        public bool AutoMove { get; set; }

        [Setting, DefaultValue(true)]
        public bool AutoRacial { get; set; }

        [Setting, DefaultValue(false)]
        public bool AutoSetFocus { get; set; }

        [Setting, DefaultValue(true)]
        public bool AutoTarget { get; set; }

        [Setting, DefaultValue(true)]
        public bool AutoTaunt { get; set; }

        [Setting, DefaultValue(true)]
        public bool AttackOOC { get; set; }

        [Setting, DefaultValue(19)] //S
        public int Backward { get; set; }

        [Setting, DefaultValue(true)]
        public bool Barrage { get; set; }

        [Setting, DefaultValue(true)]
        public bool BestialWrath { get; set; }

        [Setting, DefaultValue(true)]
        public bool BestialWrathCD { get; set; }

        [Setting, DefaultValue(true)]
        public bool BestialWrathBurst { get; set; }

        [Setting, DefaultValue(true)]
        public bool BestialWrathLC { get; set; }

        [Setting, DefaultValue(true)]
        public bool BlackArrow { get; set; }

        [Setting, DefaultValue(true)]
        public bool BlinkStrike { get; set; }

        [Setting, DefaultValue(true)]
        public bool BullHeaded { get; set; }

        [Setting, DefaultValue(1)]
        public int BurstKey { get; set; }

        [Setting, DefaultValue(60)]
        public int BurstHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool Camouflage { get; set; }

        [Setting, DefaultValue(true)]
        public bool CamouflageCombat { get; set; }

        [Setting, DefaultValue(40)]
        public int CamouflageCombatPercent { get; set; }

        [Setting, DefaultValue(1)]
        public int CallPetNumber { get; set; }

        [Setting, DefaultValue(1)]
        public int CallPetNumberMM { get; set; }

        [Setting, DefaultValue(1)]
        public int CallPetNumberSV { get; set; }

        [Setting, DefaultValue(true)]
        public bool ChimeraShot { get; set; }

        [Setting, DefaultValue(true)]
        public bool CobraShot { get; set; }

        [Setting, DefaultValue(true)]
        public bool ConcussiveShot { get; set; }

        [Setting, DefaultValue(true)]
        public bool Cower { get; set; }

        [Setting, DefaultValue(70)]
        public int CowerPercent { get; set; }

        [Setting, DefaultValue(true)]
        public bool DeterrenceHP { get; set; }

        [Setting, DefaultValue(30)]
        public int DeterrenceHPPercent { get; set; }

        [Setting, DefaultValue(true)]
        public bool DeterrenceUnit { get; set; }

        [Setting, DefaultValue(3)]
        public int DeterrenceUnitNumber { get; set; }

        [Setting, DefaultValue(true)]
        public bool DireBeast { get; set; }

        [Setting, DefaultValue(true)]
        public bool Disengage { get; set; }

        [Setting, DefaultValue(3)]
        public int DisengageUnitNumber { get; set; }

        [Setting, DefaultValue(30)]
        public int DistanceRange { get; set; }

        [Setting, DefaultValue(95)]
        public int DoNotHealAbove { get; set; }

        [Setting, DefaultValue(true)]
        public bool Exhilaration { get; set; }

        [Setting, DefaultValue(60)]
        public int ExhilarationMe { get; set; }

        [Setting, DefaultValue(true)]
        public bool ExhilarationPetHP { get; set; }

        [Setting, DefaultValue(20)]
        public int ExhilarationPet { get; set; }

        [Setting, DefaultValue(true)]
        public bool ExplosiveShot { get; set; }

        [Setting, DefaultValue(true)]
        public bool ExplosiveTrapDPS { get; set; }

        [Setting, DefaultValue(true)]
        public bool ExplosiveTrapSV { get; set; }

        [Setting, DefaultValue(true)]
        public bool ExplosiveTrapMoM { get; set; }

        [Setting, DefaultValue(30)]
        public int ExplosiveTrapMoMDistance { get; set; }

        [Setting, DefaultValue(true)]
        public bool FeignDeath { get; set; }

        [Setting, DefaultValue(40)]
        public int FeignDeathPercent { get; set; }


        [Setting, DefaultValue(true)]
        public bool Fervor { get; set; }

        [Setting, DefaultValue(40)]
        public int FervorFocus { get; set; }

        [Setting, DefaultValue(true)]
        public bool Fetch { get; set; }

        [Setting, DefaultValue(true)]
        public bool Flare { get; set; }

        [Setting, DefaultValue(true)]
        public bool FocusFire { get; set; }

        [Setting, DefaultValue(34)] //8
        public int FocusFreezingTrap { get; set; }

        [Setting, DefaultValue(31)]
        public int FocusScatterShot { get; set; }

        [Setting, DefaultValue(23)] //W
        public int Forward { get; set; }

        [Setting, DefaultValue(true)]
        public bool FreezingTrap { get; set; }

        [Setting, DefaultValue(true)]
        public bool FreezingTrapODM { get; set; }

        [Setting, DefaultValue(true)]
        public bool FreezingTrapODMDPS { get; set; }

        [Setting, DefaultValue(true)]
        public bool FreezingTrapODMHealer { get; set; }

        [Setting, DefaultValue(true)]
        public bool FreezingTrapMoM { get; set; }

        [Setting, DefaultValue(30)]
        public int FreezingTrapMoMDistance { get; set; }

        [Setting, DefaultValue(true)]
        public bool GlaiveToss { get; set; }

        [Setting, DefaultValue(true)]
        public bool PetGrowlPetAttackingMe { get; set; }

        [Setting, DefaultValue(true)]
        public bool HealthStone { get; set; }

        [Setting, DefaultValue(40)]
        public int HealthStoneHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool HuntersMark { get; set; }

        [Setting, DefaultValue(true)]
        public bool HuntersMarkOOC { get; set; }

        [Setting, DefaultValue(true)]
        public bool IceTrapMoM { get; set; }

        [Setting, DefaultValue(30)]
        public int IceTrapMoMDistance { get; set; }

        [Setting, DefaultValue(true)]
        public bool IceTrapSV { get; set; }

        [Setting, DefaultValue(true)]
        public bool InterruptAll { get; set; }

        [Setting, DefaultValue(true)]
        public bool InterruptTarget { get; set; }

        [Setting, DefaultValue(true)]
        public bool InterruptFocus { get; set; }

        [Setting, DefaultValue(true)]
        public bool IntimidationInterrupt { get; set; }

        [Setting, DefaultValue(2000)]
        public int IntimidationInterruptMS { get; set; }

        [Setting, DefaultValue(true)]
        public bool IntimidationLowHP { get; set; }

        [Setting, DefaultValue(30)]
        public int IntimidationLowHPPercent { get; set; }

        [Setting, DefaultValue(true)]
        public bool IntimidationFriendLowHP { get; set; }

        [Setting, DefaultValue(50)]
        public int IntimidationFriendLowHPPercent { get; set; }

        [Setting, DefaultValue(true)]
        public bool KillCommand { get; set; }

        [Setting, DefaultValue(true)]
        public bool KillShot { get; set; }

        [Setting, DefaultValue(true)]
        public bool KillShotOffTarget { get; set; }

        [Setting, DefaultValue(true)]
        public bool LagTolerance { get; set; }

        [Setting, DefaultValue(true)]
        public bool LastStand { get; set; }

        [Setting, DefaultValue(25)]
        public int LastStandPercent { get; set; }

        [Setting, DefaultValue(true)]
        public bool LynxRush { get; set; }

        [Setting, DefaultValue(true)]
        public bool MarkASAP { get; set; }

        [Setting, DefaultValue(true)]
        public bool MasterCallMe { get; set; }

        [Setting, DefaultValue(false)]
        public bool MasterCallMelee { get; set; }

        [Setting, DefaultValue(false)]
        public bool MasterCallCaster { get; set; }

        [Setting, DefaultValue(false)]
        public bool MasterCallHealer { get; set; }

        [Setting, DefaultValue(true)]
        public bool MendPet { get; set; }

        [Setting, DefaultValue(90)]
        public int MendPetPercent { get; set; }

        [Setting, DefaultValue(true)]
        public bool Misdirection { get; set; }

        [Setting, DefaultValue(true)]
        public bool MultiShot { get; set; }

        [Setting, DefaultValue(false)]
        public bool Pause { get; set; }

        [Setting, DefaultValue(33)]
        public int PauseKey { get; set; }

        [Setting, DefaultValue(true)]
        public bool PauseKeyUse { get; set; }

        [Setting, DefaultValue(true)]
        public bool PetAttack { get; set; }

        [Setting, DefaultValue(70)]
        public int PetAttackHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool PetFollow { get; set; }

        [Setting, DefaultValue(30)]
        public int PetFollowHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool PetFollowDist { get; set; }

        [Setting, DefaultValue(60)]
        public int PetFollowDistYard { get; set; }

        [Setting, DefaultValue(true)]
        public bool PetStunMoM { get; set; }

        [Setting, DefaultValue(true)]
        public bool PetTankAdd { get; set; }

        [Setting, DefaultValue(true)]
        public bool Powershot { get; set; }

        [Setting, DefaultValue(75)]
        public int PriorityHeal { get; set; }

        [Setting, DefaultValue(1)]
        public int ProfBuff { get; set; }

        [Setting, DefaultValue(60)]
        public int ProfBuffHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool RapidFire { get; set; }

        [Setting, DefaultValue(true)]
        public bool RapidFireCD { get; set; }

        [Setting, DefaultValue(true)]
        public bool RapidFireBurst { get; set; }

        [Setting, DefaultValue(true)]
        public bool Readiness { get; set; }

        [Setting, DefaultValue(true)]
        public bool ReadinessAM { get; set; }

        [Setting, DefaultValue(true)]
        public bool ReadinessBW { get; set; }

        [Setting, DefaultValue(true)]
        public bool ReadinessLR { get; set; }

        [Setting, DefaultValue(true)]
        public bool ReadinessRF { get; set; }

        [Setting, DefaultValue(true)]
        public bool ReadinessScS { get; set; }

        [Setting, DefaultValue(true)]
        public bool ReadinessFT { get; set; }

        [Setting, DefaultValue(true)]
        public bool ReadinessSiS { get; set; }

        [Setting, DefaultValue(true)]
        public bool ReadinessDe { get; set; }

        [Setting, DefaultValue(true)]
        public bool RoarofSacrifice { get; set; }

        [Setting, DefaultValue(50)]
        public int RoarofSacrificePercent { get; set; }

        [Setting, DefaultValue(true)]
        public bool RoarofSacrificeUnitMode { get; set; }

        [Setting, DefaultValue(3)]
        public int RoarofSacrificeUnit { get; set; }

        [Setting, DefaultValue(1000)]
        public int SearchInterval { get; set; }

        [Setting, DefaultValue(40)]
        public int SearchRange { get; set; }

        [Setting, DefaultValue(true)]
        public bool SnakeTrapCasterHealer { get; set; }

        [Setting, DefaultValue(true)]
        public bool Stampede { get; set; }

        [Setting, DefaultValue(true)]
        public bool StampedeCD { get; set; }

        [Setting, DefaultValue(true)]
        public bool StampedeBurst { get; set; }

        [Setting, DefaultValue(true)]
        public bool SilencingShotInterrupt { get; set; }

        [Setting, DefaultValue(2000)]
        public int SilencingShotInterruptMS { get; set; }

        [Setting, DefaultValue(true)]
        public bool SilencingShotLowHP { get; set; }

        [Setting, DefaultValue(30)]
        public int SilencingShotLowHPPercent { get; set; }

        [Setting, DefaultValue(32)] //6
        public int ScareBeastKey { get; set; }

        [Setting, DefaultValue(true)]
        public bool ScatterShotInterrupt { get; set; }

        [Setting, DefaultValue(2000)]
        public int ScatterShotInterruptMS { get; set; }

        [Setting, DefaultValue(true)]
        public bool ScatterShotFriendLowHP { get; set; }

        [Setting, DefaultValue(50)]
        public int ScatterShotFriendLowHPPercent { get; set; }

        [Setting, DefaultValue(true)]
        public bool ScatterShotMoM { get; set; }

        [Setting, DefaultValue(true)]
        public bool SerpentSting { get; set; }

        [Setting, DefaultValue(true)]
        public bool SerpentStingImproved { get; set; }

        [Setting, DefaultValue(true)]
        public bool SnakeTrapMoM { get; set; }

        [Setting, DefaultValue(30)]
        public int SnakeTrapMoMDistance { get; set; }

        [Setting, DefaultValue(true)]
        public bool SpiritMend { get; set; }

        [Setting, DefaultValue(70)]
        public int SpiritMendMe { get; set; }

        [Setting, DefaultValue(true)]
        public bool SpiritMendP { get; set; }

        [Setting, DefaultValue(70)]
        public int SpiritMendPet { get; set; }

        [Setting, DefaultValue(true)]
        public bool SteadyShot { get; set; }

        [Setting, DefaultValue(17)] //Q
        public int StrafleLeft { get; set; }

        [Setting, DefaultValue(5)] //E
        public int StrafleRight { get; set; }

        [Setting, DefaultValue(33)] //7
        public int TargetFreezingTrap { get; set; }

        [Setting, DefaultValue(33)]
        public int TargetScatterShot { get; set; }

        [Setting, DefaultValue(true)]
        public bool TranquilizingShot { get; set; }

        [Setting, DefaultValue(true)]
        public bool TrapLauncher { get; set; }

        [Setting, DefaultValue(true)]
        public bool TrapSmokeBomb { get; set; }

        [Setting, DefaultValue(1)]
        public int Trinket1 { get; set; }

        [Setting, DefaultValue(60)]
        public int Trinket1HP { get; set; }

        [Setting, DefaultValue(1)]
        public int Trinket2 { get; set; }

        [Setting, DefaultValue(60)]
        public int Trinket2HP { get; set; }

        [Setting, DefaultValue(4)] //A
        public int TurnRight { get; set; }

        [Setting, DefaultValue(1)] //D
        public int TurnLeft { get; set; }

        [Setting, DefaultValue(3)]
        public int UnittoStartAoE { get; set; }

        [Setting, DefaultValue(40)]
        public int UrgentHeal { get; set; }

        [Setting, DefaultValue(true)]
        public bool UseFood { get; set; }

        [Setting, DefaultValue(50)]
        public int UseFoodHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool WidowVenom { get; set; }
    }
}